#ifndef GHEADERS_H
#define GHEADERS_H

#include <stdint.h>
#include <sys/types.h>
#include <string>
#include <vector>
using std::string;
using std::vector;

//system limits
#define		USR_LEN			128	    //最大用户名长度
#define		PWD_LEN			128     //最大密码长度
#define		PATH_LEN		256		//最大路径长度
#define		FILE_LEN		32		//最长文件名
#define		BUF_SIZE		1024
#define		BLOCK_SIZE		4096	//文件传输的块大小

//data进程中的状态机
#define		DATA_INIT			1
#define		DATA_SYNC			2
#define		DATA_PUSH			3
#define		DATA_PULL			4

//服务器信息
//#define         SRV_IP                  "192.168.6.45"
#define         SRV_IP                  "210.30.96.32"
#define		SRV_DATA_PORT		"1235"
#define		SRV_CTL_PORT		"1234"

//通信协议
#define		REG					1		//注册
#define		LOGIN				2		//登录
#define		CREATE_D			3		//新建目录
#define		CREATE_F			4		//创建文件
#define		DEL_F				5		//删除文件
#define		DEL_D				6		//删除目录
#define		UP_F				7		//更新文件
#define		UP_D				8		//更新目录
#define		EXIT				9		//用户退出
#define		MOVE				10		//移动文件、目录
#define     LOGIN_PHONE			11		//手机端登录
#define     REQUEST_LIST		12		//手机请求目录

//客户端容量
#define   USER_SIZE                   (1024*1024*1024)

//服务器上的根目录
#define SRV_ROOT "/gsync"

/* ---------------------------------------------------------------*/
/**
 * 简介: 以下4个结构体是与ctl进程相关的
 */
/* ---------------------------------------------------------------*/
typedef struct id_pair
{
        char		usr[USR_LEN]; //用户名
        char		pwd[PWD_LEN]; //密码
} id_pair_t;

typedef union str
{
        id_pair_t	id;
        char		path[PATH_LEN];
} str_t;

/*控制信息的连接中传的包*/
typedef struct ctl_pkg
{
        uint8_t		type;
        str_t		str;
} ctl_pkg_t;

#endif // GHEADERS_H
